#ifndef _EVENT_FIFO_H
#def _EVENT_FIFO_H

#define JAJAK_EVENT_FIFO_MAX 110

typedef struct{
	char* tag;
	void (*cb)(void);
}jaja_event_t;

typedef struct{
	jaja_event_t fifo_buff[JAJAK_EVENT_FIFO_MAX];
	jaja_uint_t in_idx;
	jaja_uint_t out_idx;
	jaja_uint_t fifo_count;
}jaja_event_fifo_t;




void jaja_event_cpy(jaja_event_t *dest, jaja_event_t *src)
{
	dest->tag = src->tag;
	dest->cb = src->cb;
}


jaja_event_fifo_in(jaja_event_fifo_t *fifo, jaja_event_t *ev)
{
	fifo->in_idx;
	if(fifo->in_idx == fifo->out_idx)
	jaja_event_cpy(&fifo->fifo_buff[fifo->in_idx], ev);
	fifo->fifo_count++;
	if(fifo->in_idx +1 >= JAJAK_EVENT_FIFO_MAX)//已经是最大索引
	{
		fifo->in_idx =0;
	}
}


jaja_event_fifo_out(jaja_event_fifo_t *fifo, jaja_event_t *ev)
{
	fifo->out_idx;
	jaja_event_cpy(fifo->fifo_buff[], ev);
}




//使用该函数发信息
jaja_int_t jaja_event_send(jajak_event_t *ev);

//取消息
jaja_int_t jaja_event_recv(jajak_event_t *ev);

#endif